阿里云SDK针对ROS简化了使用编程语言定义和部署云资源的过程(如Java、TypeScript、Go、Python、PHP、C++、C#、Node.js和Swift)。本文为您介绍如何使用阿里云SDK调用ROS API。
关于阿里云SDK的详细信息,请参见什么是阿里云SDK?
查看OpenAPI文档
在调用OpenAPI前,建议您先阅读对应接口文档,了解、学习调用该接口所需要的参数及权限等。更多信息,请参见API概览。
准备工作
获取AccessKey信息。
获取当前账号AccessKey信息用于配置凭证,如果尚未创建,请参见创建AccessKey。
重要为避免主账号泄露AccessKey带来的安全风险,建议您创建RAM用户,授予RAM用户资源编排ROS相关的访问权限,再使用RAM用户的AccessKey调用SDK。更多信息,请参见为RAM角色授权。
配置凭证。
为避免将AccessKey硬编码到业务代码中带来的安全风险,建议您采用配置环境变量的方法管理AccessKey。本文以设置环境变量为例配置凭证。
Linux和macOS系统
通过export命令配置环境变量
重要使用export命令配置的临时环境变量仅对当前会话有效,当会话退出之后所设置的环境变量将会丢失。若需长期保留环境变量,可将export命令配置到对应操作系统的启动配置文件中。
配置AccessKey ID、AccessKey Secret。
# 将<ACCESS_KEY_ID>替换为您自己的AccessKey ID。 export ALIBABA_CLOUD_ACCESS_KEY_ID=<ACCESS_KEY_ID> # 将<ACCESS_KEY_SECRET>替换为您自己的AccessKey Secret。 export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ACCESS_KEY_SECRET>
验证是否配置成功。
执行
echo $ALIBABA_CLOUD_ACCESS_KEY_ID
命令,如果返回正确的AccessKey ID,则说明配置成功。
Windows系统
通过图形用户界面GUI
操作步骤
以下为Windows 10中通过图形用户界面设置环境变量的步骤。
在桌面右键单击此电脑,选择属性>高级系统设置>环境变量>系统变量/用户变量>新建,完成以下配置:
变量
示例值
AccessKey ID
变量名:ALIBABA_CLOUD_ACCESS_KEY_ID
变量值:LTAI4GDty8ab9W4Y1D****
AccessKey Secret
变量名:ALIBABA_CLOUD_ACCESS_KEY_SECRET
变量值:IrVTNZNy5yQelTETg0cZML3TQn****
测试设置是否成功
单击开始(或快捷键:Win+R)> 运行(输入 cmd)> 确定(或按 Enter 键),打开命令提示符,执行
echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
、echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
命令。若返回正确的AccessKey,则说明配置成功。
安装运行环境以及SDK依赖
您需要安装编程语言的对应版本,以及配置ROS SDK依赖,以满足运行环境。
可参考下图在OpenAPI门户中,根据您使用的编程语言配置环境、SDK依赖。
使用阿里云SDK
本节以ListStacks - 查询资源栈列表接口为例,为您展示如何使用阿里云SDK调用ROS API。
生成或编写代码
生成代码
您可以通过OpenAPI生成代码并下载,调用API。
登录资源编排API调试列表。
选择您需要使用的API,并填写参数,单击发起调用。本文以ListStacks接口为例。
在SDK示例页签下的Python页签,单击下载完整工程,下载Python SDK示例代码包。
在本地解压示例代码包,并进入alibabacloud_sample目录。
编写代码
您可以根据API文档自行编写代码并调用API。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
from typing import List
from alibabacloud_ros20190910.client import Client as ROS20190910Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ros20190910 import models as ros20190910_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> ROS20190910Client:
"""
使用AK&SK初始化账号Client
@return: Client
@throws Exception
"""
# 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
config = open_api_models.Config(
# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# Endpoint 请参考 https://api.aliyun.com/product/ROS
config.endpoint = f'ros.aliyuncs.com'
return ROS20190910Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
list_stacks_request = ros20190910_models.ListStacksRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印 API 的返回值
client.list_stacks_with_options(list_stacks_request, runtime)
except Exception as error:
# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
# 错误 message
print(error.message)
# 诊断地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
list_stacks_request = ros20190910_models.ListStacksRequest(
region_id='cn-hangzhou'
)
runtime = util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印 API 的返回值
await client.list_stacks_with_options_async(list_stacks_request, runtime)
except Exception as error:
# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
# 错误 message
print(error.message)
# 诊断地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
运行代码
运行代码得到如下输出结果。
{
"TotalCount": 1,
"PageSize": 10,
"RequestId": "692E6895-AEFC-550C-B968-AE929BB68891",
"PageNumber": 1,
"Stacks": [
{
"Status": "IMPORT_CREATE_COMPLETE",
"OperationInfo": {},
"ResourceGroupId": "rg-acfmz7hmshz****",
"ServiceManaged": false,
"StatusReason": "Stack IMPORT_CREATE completed successfully",
"CreateTime": "2023-06-26T09:40:26",
"StackType": "ROS",
"RegionId": "cn-hangzhou",
"DisableRollback": false,
"StackName": "TemplateScratch-ResourceImport-wffTp****",
"Tags": [
{
"Value": "rg-acfmz7hmshzcriy",
"Key": "acs:rm:rgId"
}
],
"TimeoutInMinutes": 60,
"StackId": "814d2113-348c-41f1-adb2-85d3aadf****"
}
]
}